gmtime関数とlocaltime関数は、紀元(1970年1月1日00:00:00 UTC)からの経過秒数を日時情報に変換します。日時情報はtm構造体と呼ぶ構造体のメンバーとして作成します。なお、経過秒数はtime関数で取得することができます。
gmtime関数とlocaltime関数の相違は、gmtime関数は協定世界時(UTC)での時刻へ変換するのに対して、localtime関数はローカル標準時での時刻へ変換します。従って、通常はlocaltime関数を使用して、日本標準時(JST)に変換します。ちなみに、JSTは「UTC+9時間」です。
#include <time.h>
struct tm *gmtime(const time_t *timep);
struct tm *localtime(const time_t *timep);
*timepは紀元からの経過秒数を指定します。
戻り値として、tm構造体のポインタを返します。エラーの場合は、NULLを返します。
tm構造体は<time.h>で定義されており、次のようなメンバーで構成されています。
メンバー名 | 内容 |
---|---|
tm_sec | 秒数で、0から59までの値です。(但し、閏秒のため60までの値は許されます。) |
tm_min | 分数で、0から59までの値です。 |
tm_hour | 真夜中からの通算時間で、0から23までの値です。 |
tm_mday | 月はじめからの日数で、1から31までの値です。 |
tm_mon | 1月からの通算月数で、0から11までの値です。 |
tm_year | 1900年からの通算年数です。 |
tm_wday | 日曜日からの通算日数(曜日)で、0から6までの値です。(0が日曜日です。) |
tm_yday | 1月1日からの通算日数で、0から365までの値です。 |
tm_isdst | 夏時間が有効かどうかのフラグです。正の値ならば夏時間は有効になり、0ならば無効、負の値ならばこの情報には意味がないことを表します。 |
プログラム 例
#include <stdio.h> #include <time.h> int main() { time_t timep; struct tm *time_inf; /* 紀元からの経過秒数を得る */ timep = time(NULL); /* 協定世界時(UTC)へ変換 */ time_inf = gmtime(&timep); printf('UTC:%s', asctime(time_inf)); /* ローカル標準時へ変換 */ time_inf = localtime(&timep); printf('JST:%s', asctime(time_inf)); return 0; }
例の実行結果
$ date 2008年 7月 24日 木曜日 10:42:28 JST $ $ ./localtime.exe UTC:Thu Jul 24 01:42:32 2008 JST:Thu Jul 24 10:42:32 2008 $